相信有很多人都對Spring Data JPA, JPA, Hibernate 三者之間的關係不太了解。究竟它們之間有什麼區別呢?
全稱是Java Persistence API是一個標準規範及接口(API)來實現ORM(object-relational mapping)框架,JPA通過註解(annotation) [如:@Entity、@Table、@Column等註解] 或XML描述物件-關係表的對映關係,並將執行期的實體物件持久化到資料庫中。
JPA的出現有兩個原因:
1,簡化現有Java EE和Java SE應用的物件持久化的開發工作;
2,Sun希望整合對ORM技術,實現持久化領域的統一。
JPA不是一種框架,而是一個標準規範。而要使用JPA的功能就需要Provider來配合,而Provider就是各種ORM框架。
如下圖所示:
在JPA底下其實有各種ORM框的選擇,可按項目的情況選擇合適的框。
知識站:
Object-relational mapping (ORM) 是一種編程技術,用於配對應用程式模型物件和數據庫表格的資料。
是其中一種ORM框架,也是JPA 提供者 (JPA provider),而JPA Provider還有Eclipse Link (Reference Implementation), OpenJPA 等等。
它可以現合JPA將JPA的功能使用出來。
Hibernate 是以Java為基礎的ORM,將Java的物件轉換成數據庫表格的資料,也可以將數據庫表格的資料轉換成Java的物件。
不是JPA而是一種技術/模組(module) 。
Spring Data JPA makes it easy to easily implement JPA based repositories. This module deals with enhanced support for JPA based data access layers.
目的是支援JPA的數據訪問層(Data Access Layer),以精簡及減少編寫SQL代碼來改善開發者的開發效率,
Spring Data JPA aims to significantly improve the implementation of data access layers by reducing the effort to the amount that’s actually needed.
參考文章/網站/書本: